Skip to content

[pull] main from expo:main#627

Merged
pull[bot] merged 14 commits intocode:mainfrom
expo:main
Feb 25, 2026
Merged

[pull] main from expo:main#627
pull[bot] merged 14 commits intocode:mainfrom
expo:main

Conversation

@pull
Copy link

@pull pull bot commented Feb 25, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

Kudo and others added 14 commits February 25, 2026 18:04
# Why

update docs for jetpack-compose for sdk 55 

# How

try to align the doc style as swift-ui

# Test Plan

preview from upstack pr

# Checklist

- [x] I added a `changelog.md` entry and rebuilt the package sources according to [this short guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting)
- [x] This diff will work correctly for `npx expo prebuild` & EAS Build (eg: updated a module plugin).
- [x] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
# Why

backport changes from #43401 to sdk 55 docs

# How

backport changes

# Test Plan

previews:
  - https://pr-43402.expo-docs.pages.dev/versions/unversioned/sdk/ui/jetpack-compose/
  - https://pr-43402.expo-docs.pages.dev/versions/v55.0.0/sdk/ui/jetpack-compose/

# Checklist

- [x] I added a `changelog.md` entry and rebuilt the package sources according to [this short guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting)
- [x] This diff will work correctly for `npx expo prebuild` & EAS Build (eg: updated a module plugin).
- [x] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
# Why

fix prebuilt dev-plugin-webui doesn't work when fetching the wa-sqlite wasm

# How

- bump the plugin to sdk 55 and run `yarn bundle:webui` to bundle the dev-plugin-dist
- publish all files under dev-plugin-dist
# Why

update doc for sdk 55 new feature

# How

- update web setup for hosting
- add inspector
# Why

This modifier is really useful in widgets.

# How

Like every other simple modifier.

# Test Plan

## Source

```tsx
import { Circle, HStack, VStack, ZStack } from '@expo/ui/swift-ui';
import { foregroundStyle, frame, luminanceToAlpha } from '@expo/ui/swift-ui/modifiers';
import { createWidget, WidgetBase } from 'expo-widgets';

type Props = {
  state: string;
};

export const TestWidget = (p: WidgetBase<Props>) => {
  'widget';

  return (
    <VStack>
      <HStack>
        <ZStack modifiers={[luminanceToAlpha()]}>
          <Circle modifiers={[frame({ width: 80, height: 80 }), foregroundStyle('red')]} />
          <Circle modifiers={[frame({ width: 60, height: 60 }), foregroundStyle('green')]} />
          <Circle modifiers={[frame({ width: 40, height: 40 }), foregroundStyle('blue')]} />
        </ZStack>
      </HStack>
    </VStack>
  );
};

const widget = createWidget('Widget1', CalcWidget);

export default widget;
```
## Preview
<img width="250" alt="Pasted Graphic"
src="https://github.com/user-attachments/assets/af273a12-aa95-4468-b409-71b2f174c7d9"
/>

| Customization type | Without modifier | With modifier |
| --- | --- | --- |
| Clear | <img width="200" alt="Pasted Graphic 1"
src="https://github.com/user-attachments/assets/cd6c12fe-8033-4787-8813-ded874b5edbe"
/> | <img width="200" alt="Pasted Graphic 4"
src="https://github.com/user-attachments/assets/b297d446-a326-4914-baf6-9bd27ccdef1f"
/> |
| Tinted | <img width="200" alt="Pasted Graphic 2"
src="https://github.com/user-attachments/assets/7bcb75d2-80ce-4a80-94e9-295c581b37db"
/> | <img width="200" alt="Pasted Graphic 3"
src="https://github.com/user-attachments/assets/f885f0c3-e6d0-488a-84b8-7ce669516ada"
/> |


# Checklist

- [x] I added a `changelog.md` entry and rebuilt the package sources
according to [this short
guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting)
- [x] This diff will work correctly for `npx expo prebuild` & EAS Build
(eg: updated a module plugin).
- [x] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
# Why

Every time the props change, the entire widget is re-rendered which
results in unwanted transitions (_"blinking"_).

# How

For now, we've completely turned off the transitions as a workaround.

# Test Plan

```tsx
import { Button, Text, VStack } from '@expo/ui/swift-ui';
import { font, foregroundStyle } from '@expo/ui/swift-ui/modifiers';
import { createWidget, WidgetBase } from 'expo-widgets';

type Props = { count: number };

const CoffeeCounter = (p: WidgetBase<Props>) => {
  'widget';

  return (
    <VStack spacing={8}>
      <Text modifiers={[font({ size: 48 })]}>☕</Text>
      <Text modifiers={[font({ size: 32, weight: 'bold' })]}>{p.count}</Text>
      <Button
        modifiers={[foregroundStyle('white')]}
        label="+"
        target="increment"
        onPress={() => ({ count: p.count + 1 })}
      />
    </VStack>
  );
};

export default createWidget('CoffeeCounter', CoffeeCounter);
```

# Checklist

- [x] I added a `changelog.md` entry and rebuilt the package sources
according to [this short
guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting)
- [x] This diff will work correctly for `npx expo prebuild` & EAS Build
(eg: updated a module plugin).
- [x] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
… no widgets (#43425)

# Why

If there are no widgets specified in `app.json`, config plugin does not
generate `WidgetBundle` at all.

# How

Generate `WidgetBundle` for Live Activity.

# Test Plan

Run prebuild without specifying widgets field.

# Checklist

- [x] I added a `changelog.md` entry and rebuilt the package sources
according to [this short
guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting)
- [x] This diff will work correctly for `npx expo prebuild` & EAS Build
(eg: updated a module plugin).
- [x] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
…oom transition (#43370)

# Why

When navigating from a preview to a screen with zoom transition, the
zoom transition was not applied. This PR makes it a little less
restrictive.

1. Allows for a transition from a preview to a modal screen with zoom
transition. Transition to a standard screen does not work in UIKit, so
we need to restrict it to modal only
2. Disables `usePreventZoomTransitionDismissal` hook inside modal -
seems to be a native bug, but needs further investigation - adding a
warning for now.

# How

1. Remove strict condition which disabled zoom transition after preview
navigation
2. Detect if navigation is from preview
3. If it is from preview and not modal then don't apply zoom transition
4. Detect if zoom transition is enabled from the
`usePreventZoomTransitionDismissal`. If it is not or if the screen
presentation is modal, then the hook noops.

Additionally fixes minor bugs (e.g. direct imports from `.ios` files)

# Test Plan

1. Unit tests
2. Manual testing

# Checklist

<!--
Please check the appropriate items below if they apply to your diff.
-->

- [ ] I added a `changelog.md` entry and rebuilt the package sources
according to [this short
guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting)
- [ ] This diff will work correctly for `npx expo prebuild` & EAS Build
(eg: updated a module plugin).
- [ ] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
…ck-packages workflow (#43391)

Co-authored-by: Łukasz Kosmaty <kosmatylukasz@gmail.com>
## IMPORTANT

This PR should be rebased and merged after
#43097 is merged

# Why

We currently implemented shared state only for Android and the API is
meant to support both platforms. Additionally, the API requires certain
improvements

# How

## Main change

Extended current shared state implementation with an implementation for
iOS which functionality-wise matches current Android implementation

## Additional improvements (for both platforms):

### Updated the test screen

Added test cases for validating supported data types and more advanced
flows (especially revolving around state deletion and resetting)

**Note:** this screen will be further updated in the (I hope) final PR
with improvements - #43279

### Added proper handling of state deletion (JS)

Previously after deleting the state (either from JS or native) the JS
part didn't know that the state object it listens to has been deleted,
so when the object was recreated/reset in the native part the JS didn't
receive the new value nor its updates as it was listening to
non-existing object

In the new implementation native side holds a set of keys that were
deleted and notifies JS subscribers when it has been recreated, allowing
them to update their state and reset the listeners

### Added proper handling of state deletion (Native)

Previously listeners were stored directly in the shared object, but the
subscription shouldn't end when the state is deleted, but when the
remove/cancel method is explicitly called

Moved the subscription management to `BrownfieldState` object allowing
subscriptions to be persisted between state deletions

# Test Plan

Validated that the API works as on Android + that the improvements work

# Checklist

- [X] I added a `changelog.md` entry and rebuilt the package sources
according to [this short
guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting)
- [X] This diff will work correctly for `npx expo prebuild` & EAS Build
(eg: updated a module plugin).
…docs (#43418)

# Why

1. Some limitations were not listed in the split view docs
2. Support for `show` method was added in
software-mansion/react-native-screens#3639 to
SplitView, and we need to reflect this in our docs

# How

<!--
How did you build this feature or fix this bug and why?
-->

# Test Plan

<!--
Please describe how you tested this change and how a reviewer could
reproduce your test, especially if this PR does not include automated
tests! If possible, please also provide terminal output and/or
screenshots demonstrating your test/reproduction.
-->

# Checklist

<!--
Please check the appropriate items below if they apply to your diff.
-->

- [ ] I added a `changelog.md` entry and rebuilt the package sources
according to [this short
guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting)
- [ ] This diff will work correctly for `npx expo prebuild` & EAS Build
(eg: updated a module plugin).
- [ ] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)

---------

Co-authored-by: Aman Mittal <amandeepmittal@live.com>
# Why

Support for images in header submenus and actions was added in
software-mansion/react-native-screens#3645. This
PR adds it to expo-router.

Follow-up task, after support is added in react-navigation:
https://linear.app/expo/issue/ENG-19853/remove-custom-conversion-logic-for-icon-from-packagesexpo


# How

Pass icons in raw react-native-screens format.

# Test Plan

1. Unit tests
2. Manual testing

<img width="420" height="324" alt="Screenshot 2026-02-24 at 20 15 32"
src="https://github.com/user-attachments/assets/935d7ff2-4945-4ce1-b849-8890d79728e5"
/>


# Checklist

<!--
Please check the appropriate items below if they apply to your diff.
-->

- [ ] I added a `changelog.md` entry and rebuilt the package sources
according to [this short
guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting)
- [ ] This diff will work correctly for `npx expo prebuild` & EAS Build
(eg: updated a module plugin).
- [ ] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
@pull pull bot locked and limited conversation to collaborators Feb 25, 2026
@pull pull bot added the ⤵️ pull label Feb 25, 2026
@pull pull bot merged commit fb853d5 into code:main Feb 25, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants